Third-Gen Data Catalogの筆頭!?Modern Data Stackの各サービスとの連携が豊富なデータカタログ「Atlan」を試してみた
さがらです。
Modern Data Stackの各サービスとの連携が豊富なデータカタログであるAtlanを試してみたので、本記事で内容をまとめてみます。
Atlanとは
まずAtlanですが、メタデータ管理をするためのデータカタログのサービスに分類されます。
その中でも、AtlanはThird-Gen Data Catalog(あるいはData Catalog 3.0)に分類されるサービスです。先日私がブログを書いたCastorなどもThird-Gen Data Catalogにあたるデータカタログです。
こちらのAtlanのCo-Founderの記事からの引用ですが、Third-Gen Data Catalogは下記のような特徴を持っていると言われています。実際Atlanもこれらの特徴を持つサービスとなっております。
- テーブルだけでなく、BIツールのダッシュボード、SQLクエリ、JupyterノートブックなどあらゆるData Assetsを管理対象とする
- 組織内のすべてのData assetsに関して信頼できる唯一の情報源であること
- ただメタデータを溜めて見せるのではなく、クエリログから列レベルのリネージを自動的に生成したり各Data assetsごとの人気度合いも表示するなど、メタデータを活用していく(Active Metadataの考えが該当すると思います)
- 組織が日常的に使用するワークフローとのシームレスな連携(簡単に言うとSlackやJIRAなど、業務で日常的に使用するツールとの連携)
また、Atlanの面白いところは、Modern Data Stackの各サービスとの連携機能がとても豊富なことです!
直近のリリースで言うと、dbtのSemantic Layerとの連携、FivetranのMetadata APIとの連携を発表しています。
そして、昨今多様なサービスが出ているデータカタログ界隈ですが、Atlanは資金調達も順調で、市場でも評価がされているサービスです。
特に、The Forrester Wave™の「Enterprise Data Catalogs for DataOps」において、 2022年Q2ではLeadersかつ非常に高い評価を得ていることがわかります。
今回試した環境について
さて、本題としてAtlanを試した内容を書いていくのですが、今回試すことが出来た環境は「Atlan社が連携済みのData Assetsを参照することが出来るサンドボックス環境」です。
そのため、Atlanへの連携は実際に試すことは出来ていないです…
Atlanはドキュメントもしっかりと用意されているため、どんな手順でDWHやBIツールなどのAssetsと連携しているかはこちらを参考にしてみてください。
ログイン後の画面構成
Atlanにログインしてみると、このような画面が出てきます。データカタログおなじみの検索BOXが一番上に表示されていたり、Relevant to you
では最近閲覧したAssetsを確認することが出来ます。
他には、Recent Announcements
ではこちらの手順に沿って公開された組織全体へのアナウンスを確認でき、Newly Added Resources
ではこちらの手順に沿って追加されたAtlan外部(Slackなど)へのリンク一覧を見ることが出来ます。
Assets
続いて、左のメニューバーにあるAssets
を見ていきます。
Assets
では、データカタログのメイン機能とも言える、Atlanに連携したDWHのテーブルやBIツールのダッシュボードなど、各Data Assetsの内容を確認する事ができます。
AssetsをPersonaやPurposeで絞り込む
まず、一番上のAll Assets
を押すと、表示対象のAssetsの範囲をPersona
やPurpose
で絞り込むことが出来ます。
Persona
とは、特定のAssetsに対しての操作権限をコントロールする機能の一つです。事前にこちらの手順に沿って、Assetsと操作権限を紐づけたポリシーを作り、各Personaと紐づけておく必要があります。
このサンドボックス環境においては、私には6つのPersonaが割り当てられていました。役職やデータを管理する部署ごとに使い分けるのが良さそうですね。
もう一つPurpose
ですが、プロジェクトなどの粒度でデータを参照するときのアクセス制御をするための機能のようです。
…この説明だけ見ると、「Personaと同じじゃない?」となってしまうのですが、Purposeは列レベルのアクセス制御など、Personaよりも細かい粒度でアクセス制御を行いたい場合に使用する機能のようです(後述のClassificationと併せて使う…と思われます)。Purposeに関する説明やPurposeの作成手順もドキュメントがありますので、参考にしてみてください。
その上でこのサンドボックス環境においては、5つのPurpose
が割り当てられていました。
Filters機能で更にAssetsを絞り込む
各Assetsのより詳細なメタデータを用いたフィルタリング機能も、Filters
として備わっています。
Certificate
からは、対象のAssetsが管理者により認証されているAssetsなのか(Verified)、まだ開発中のAssetsなのか(Draft)、といった内容でフィルタリングすることが出来ます。Certificate
の設定方法はこちらのドキュメントをご覧ください。
Owners
からは、そのAssetsの所有者・管理者の情報でフィルタリングすることが出来ます。`Owner`の設定方法についてはこちらのドキュメントをご覧ください。
Classifications
からは、各Assetsが個人情報などを含んでいないか等といった独自の分類を事前に行っておくことで、その分類されたタグベースでフィルタリングすることが出来ます。Classifications
に関する説明は、こちらのドキュメントをご覧ください。
Terms
からは、後述するGlossary(用語集の機能)
で登録したTerm(用語のこと)を用いてフィルタリング出来ます。
Properties
からは、各Assetsに紐づく属性情報からフィルタリングすることが出来ます。
また、Atlanに連携するプロダクトによっては、Filters
からそれらのプロダクトのメタデータを用いてフィルタリングすることも可能です。
例えばサンドボックス環境においては、Airflowとdbtが連携されていたため、それぞれのメタデータでフィルタリングが可能です。
各Assetsの詳細画面
続いて、各Assetsを押したときの詳細画面について見ていきます。
詳細画面は、各Assetsの文字部分を押せばOKです。
テーブル
最初のOverview
タブでは、テーブルのレコード数、カラム数、説明文(description)、などを見ることが出来ます。
また、Overview
のReadme
欄ではより詳細に説明できるだけでなく、dbdiagram.ioを用いたER図を載せることも出来るようです。
Columns
タブでは、対象のテーブルに存在するカラムの一覧とその説明文を表示できます。
また、CLASSIFICATIONS
とTERMS
欄からは、事前に定義したものを各カラムに紐づけることも出来ます。(今回はRead Only権限のサンドボックスなので、リクエストを送るだけになっていますが)
Lineage
タブでは、対象のテーブルの親・子にあたるテーブルを見ることが出来ます。
更に、リネージが表示されている画面の右上のView Impacted Assets
を押すと、このテーブルが参照されている下流(Downstream)のテーブル一覧や、このテーブルの生成元となっている上流(Upstream)のテーブル一覧を確認することが出来ます。
元のリネージが表示されている画面においても、左右の「+」を押すことで、上流・下流のテーブルを表示することが出来ます。
また、Atlanはすでに列レベルのリネージにも対応をしております。各テーブルのview columns
を押すとそのテーブルでのカラム一覧が展開され、対象のカラムを押すと上流・下流のテーブル含めた列レベルリネージが表示されます。
加えて、各カラムを一度クリックした状態で画面の右上のView Impacted Assets
を押すと、そのクリックしたカラムに関連する下流(Downstream)と上流(Upstream)のカラムの一覧が表示可能です。
また、リネージ上の各Assetsを選択すると、右側に選択したAssetsの概要も表示されます。
Tableauのダッシュボード
続いて、Tableauのダッシュボードの場合にはどのように詳細画面が表示されるか、見ていきます。
Overview
では、このダッシュボードがどのWorkbookに含まれるかということや、ダッシュボードに関するDescription等の情報を見ることが出来ます。
Lineage
では、ダッシュボードで使用されているDatasourceから元のテーブルまでたどることが出来、かつ列レベルのリネージにも対応しています。
Related Assets
では、このダッシュボードとと紐づいているWorkbookやWorksheetを一覧で見ることが出来ます。
詳細画面の右側では何が出来るか
Assets
の画面では、検索画面でも詳細画面でも、常に右側に選択したAssetsの概要などの情報が表示されます。こちらについて、どんなことが出来るか見ていきます。
まずはOverview
ですが、選択したテーブルやダッシュボードの概要情報が表示されます。
選択したAssetsがテーブルの場合、Columns
ではカラムの一覧も見ることが出来ます。
Lineage
では、選択したAssetsを下流・上流で使用しているAssetsの一覧が表示されます。
Activity
では、対象のAssetsに関する各メタデータの更新履歴がわかります。
Resources
では、こちらの手順で紐づけた、外部のSlackやNotionなどのページを確認することが出来ます。
Queries
では、対象のAssetsを用いたクエリの一覧を見ることが出来ます。後述しますが、AtlanではInsights
という機能があり、その機能の中でクエリを発行するだけでなく、保存することが出来ます。
Request
では、対象のAssetsのTermやClassificationに関するRequestの一覧を見ることが出来ます。
Property
では、このAssetsに関する詳細な裏側のプロパティ情報を確認することが出来ます。
また、AtlanはSlack、JIRA等とも連携可能のため、連携している場合にはその情報も確認することが出来ます。(Slack連携でどんな事ができるかは、本記事の末尾で軽く触れておきます。)
Glossary
続いて、左のメニューバーにあるGlossary
を見ていきます。
改めて、Glossary
とは用語集のことで、自社内のビジネス用語の意味などを登録して、各Assetsに紐づけることが出来ます。(今回はサンドボックス環境のため、自分で用語を登録できないのですが、すでに登録されていたものを見ていきます。)
左側には登録されている用語の一覧が表示され、Glossary
➟Category
➟Term(用語)
という階層構造になっています。
各オブジェクトにマウスオーバーすると、ポップアップでそのオブジェクトに関する説明も表示されます。
そして、末端のTermを見てみますと、このように各Termの説明が表示されます。
Linked Assets
タブを押すと、このTermが紐づいているAssetsを表示することも出来ます。
Insights
続いて、左のメニューバーにあるInsights
を見ていきます。
Insights
ですが、簡単に言うとAtlan上のクエリエディタ兼クエリ保管庫です。Atlanはただのデータカタログではなく、データについて知る・見る・使う、全ての入り口として使えてしまうプロダクトなのです。
まず画面左側なのですが、Explorer
ではクエリ可能なテーブルの一覧を見ることが出来たり、Collection
では登録されたクエリの一覧を見ることが出来ます。
特にCollection
についてですが、登録されているクエリをクリックすると、右側のエディターに対象のクエリが表示されます。
また、右側のエディターなのですが、右上の「・・・」から、エディターの仕様を変更することも出来ます。わかりやすいところでいうと、Themes
から背景色を変更することが出来ます。
また、Share
からはリンクを取得したり、Slackに直接リンクさせることも出来るようです。
一風変わった機能としては、記述したクエリ上に変数を入れることが出来ます。具体的には、「クエリの内容は提供するユーザーに書き換えさせずに、ユーザーには変数の内容だけ自由に変更させてクエリできるようにしたい」というユースケースを想定しているようです。詳細は公式ドキュメントをご覧ください。
具体例として、この雷マークを押した後、下図のように変数を定義しておきます。
その後にクエリ上に{{id_variable_sample}}
のような形で入れておきます。今回はWHERE句の条件を変数で変えることを考えてみます。
この上でクエリを実行すると、{{id_variable_sample}}
を定めた値で書き換えてクエリを発行し、結果を返してくれます!(変数をコンパイルした後のクエリをエディター上で見れなそうなのが惜しいところです。)
また出力した結果はタブ区切りの形式でコピーしたり、CSVファイルとしてダウンロードすることも可能です。
参考:Slack連携について
AtlanはSlackと連携が可能とは本ブログの途中でも触れましたが、このサンドボックス環境では試すことが出来ませんでした…
そのため、Atlanの公式ドキュメントベースで、どんなことが出来るか簡単にまとめておきたいと思います。
- Atlanから、特定のSlackチャンネルで直接該当するAssetsについて質問が出来る
- 既存のSlack上でのスレッドのリンクを、Assetsに紐づける
- Atlan上のユーザー情報から、そのユーザーとSlack上でチャットを行える(おそらくDM?)
- Slackから、
/search-term
のようなコマンドを実行し、Atlanに登録されたAssetsの情報を取得する - Slack上にAtlanのAssetsのリンクを貼って投稿すると、Assetsの概要をSlack上に展開表示できる
最後に
データカタログのサービスであるAtlanを試してみました。
外部でも評価されているデータカタログということもあり、列レベルのリネージや検索機能含め、機能は申し分なかったです。特に多くの企業で使用されているSlack周りの連携機能が豊富なのが嬉しいですね!
もし機会があれば、トライアルアカウントを発行して頂き自分のAssetsを登録してどう表示されるかも試してみたいですね。